package com.smart.manage.service.impl;

import java.util.List;
import com.smart.common.utils.DateUtils;
import com.smart.manage.domain.DoctorConsultation;
import com.smart.manage.mapper.DoctorConsultationMapper;
import com.smart.manage.service.IDoctorConsultationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smart.manage.mapper.PatientsConsultationMapper;
import com.smart.manage.domain.PatientsConsultation;
import com.smart.manage.service.IPatientsConsultationService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 在线问诊Service业务层处理
 * 
 * @author lingyao
 * @date 2025-02-18
 */
@Service
public class PatientsConsultationServiceImpl implements IPatientsConsultationService 
{
    @Autowired
    private PatientsConsultationMapper patientsConsultationMapper;

    @Autowired
    private DoctorConsultationMapper doctorConsultationMapper;

    /**
     * 查询在线问诊
     * 
     * @param id 在线问诊主键
     * @return 在线问诊
     */
    @Override
    public PatientsConsultation selectPatientsConsultationById(Long id)
    {
        return patientsConsultationMapper.selectPatientsConsultationById(id);
    }

    /**
     * 查询在线问诊列表
     * 
     * @param patientsConsultation 在线问诊
     * @return 在线问诊
     */
    @Override
    public List<PatientsConsultation> selectPatientsConsultationList(PatientsConsultation patientsConsultation)
    {
        return patientsConsultationMapper.selectPatientsConsultationList(patientsConsultation);
    }

    /**
     * 新增在线问诊
     * 
     * @param patientsConsultation 在线问诊
     * @return 结果
     */
    @Override
    @Transactional
    public int insertPatientsConsultation(PatientsConsultation patientsConsultation)
    {
        // 创建一个医生就诊对象
        DoctorConsultation doctorConsultation = new DoctorConsultation();
        // 设置医生就诊对象的创建时间为当前时间
        doctorConsultation.setCreateTime(DateUtils.getNowDate());
        // 将医生就诊对象插入到数据库中
        doctorConsultationMapper.insertDoctorConsultation(doctorConsultation);
        // 设置病人问诊对象中的医生就诊ID为刚刚插入的医生就诊对象的Id，这个ID是插入数据后数据库自动生成的
        patientsConsultation.setDoctorConsultationId(doctorConsultation.getId());
        // 设置病人问诊对象的创建时间为当前时间
        patientsConsultation.setCreateTime(DateUtils.getNowDate());
        // 将病人问诊对象插入到数据库中，并获取插入的行数
        int row = patientsConsultationMapper.insertPatientsConsultation(patientsConsultation);
        // 设置医生就诊对象的病人问诊ID为刚刚插入的病人问诊对象的Id，这个ID是插入数据后数据库自动生成的
        doctorConsultation.setPatientsConsultationId(patientsConsultation.getId());
        // 更新数据库中的医生就诊对象
        doctorConsultationMapper.updateDoctorConsultation(doctorConsultation);
        // 返回插入的行数
        return row;
    }

    /**
     * 修改在线问诊
     * 
     * @param patientsConsultation 在线问诊
     * @return 结果
     */
    @Override
    public int updatePatientsConsultation(PatientsConsultation patientsConsultation)
    {
        patientsConsultation.setUpdateTime(DateUtils.getNowDate());
        return patientsConsultationMapper.updatePatientsConsultation(patientsConsultation);
    }

    /**
     * 批量删除在线问诊
     * 
     * @param ids 需要删除的在线问诊主键
     * @return 结果
     */
    @Override
    public int deletePatientsConsultationByIds(Long[] ids)
    {
        return patientsConsultationMapper.deletePatientsConsultationByIds(ids);
    }

    /**
     * 删除在线问诊信息
     * 
     * @param id 在线问诊主键
     * @return 结果
     */
    @Override
    public int deletePatientsConsultationById(Long id)
    {
        return patientsConsultationMapper.deletePatientsConsultationById(id);
    }
}
